/* 
 * cms，一个基于J2EE架构内容管理系统
 * Copyright © GrayRabbit Co., Ltd. All rights reserved.
 * Department:运营department
 * 更多信息请访问：
 * http://code.google.com/p/gray-rabbit-cms/
 */
package org.grayrabbit.cms.service.site;

import java.util.List;
import java.util.Set;

import org.grayrabbit.cms.entity.Site;
import org.grayrabbit.cms.vo.site.SiteBean;

import org.grayrabbit.dao.util.Page;
import org.grayrabbit.service.GenericService;

/**
 * <b>OperLog</b>的service接口

 * @version 1.0,创建时间: 2011-05-16 15:11:17 
 */
public interface SiteService extends GenericService {
	/**
	 * 根据主键查询实体
	 * @param siteId
	 * @return
	 */
	Site getSite(String siteId);
	/**
	 * 批量删除
	 * @param key
	 */
	void delete(String[] key);
	/**
	 * 删除实体
	 * @param site
	 */
	void delete(Site site);
	/**
	 * 保存实体
	 * @param site
	 */
	void save(Site site);
	/**
	 * 根据bean组装统计查询条件(名称参数)
	 * @param site
	 * @return
	 */
	Page<Site> getPage(SiteBean siteBean);
	/**
	 * 填充分页组件的查询：(名称参数)
	 * @param page
	 * @param siteBean
	 */
	void list(Page<Site> page, SiteBean siteBean);
	/**
	 * 查询所有记录（bean参数）
	 * @param siteBean
	 * @return 
	 */
	List<Site> findALL( SiteBean siteBean);
	
	/**
	 * 检查站点名称唯一性
	 * @param role
	 * @return
	 */
	Boolean checkNameUnique(String siteName,String stname);
	/**
	 * 检查站点简称名称唯一性
	 * @param role
	 * @return
	 */
	Boolean checkSimplenameunique(String siteShortName,String oldname);
	public Site getSiteWithAllCategory(String siteId);
	
	public List<Site> getAllSiteWithAllCategory();
	List<Site> findAllSiteWithTopic();
	public List<Site> findAllUsableSite();
	int countCatBySites(List<String> list);
	int countTopicBySites(List<String> list);
	int countContentBySites(List<String> list);
	int countMoreCatBySites(List<String> list);
	int countMoreTopicBySites(List<String> list);
	int countMoreContentBySites(List<String> list);
	int countSurveyBySites(List<String> list);
	/**过滤权限的栏目集合
	 * @param set  当前管理员的权限集合
	 * @param currentSiteId 当前站点
	 * @param type  true：category，false：content
	 * @return
	 */
	public String hasAuthCodeCategories(Set<String> authSet,
			String currentSiteId, String adminId, boolean type,
			String siteName, String contentPath,boolean needUrl);
	
	String AllSiteCategoriesJsonForAuth();
	String AllSiteTopicsJsonForAuth(String siteId);
	/**site：domain logo */
	String findSiteInfo(String area);
}